// get_arg.h
//

#if !defined(GETARG_H)
#define GETARG_H


#include <string>
//#include <iosfwd>
#include <sstream>
#include <iostream>
#include <fstream>


class t_program_args
{
public:

	double			ks_cutoff;
	std::string		ks_table;
	double			filter_cutoff;
	bool			filter_less_than;
	std::string		filter_table;
	std::string		filter_column;


	// database login string
	std::string		db_login;
	

	// for error / progress messages etc.
	std::ostream&	VERBOSE() {return verbose ? std::cerr : strm_ignore;}
	std::ostream&	IGNORE() {return strm_ignore;}
	std::ostream&	CERR(){return log_to_file ? f_err_log : std::cerr;}

	// for initializing this struct
	friend
	bool GetArguments(int argc, char* argv[], t_program_args& args);
	bool IsVerbose() const	{return verbose;}
private:
	bool verbose;
	std::ostringstream 	strm_ignore;
	bool				log_to_file;
	std::ofstream		f_err_log;
};

bool GetArguments(int argc, char* argv[], t_program_args& args);
#endif //GETARG_H
